(function(){
    var m = 0;
    if (!checkConnect()) return;
    async function init(){
        var rtn = await loadManbers();
        if (rtn){
            var my = getMy();
            if (!my || !my.isReal){
                alert("被批转成为正式会员后才需要交会费");
                return;
            }
            var list = getNode("feeHistory");
            var line = list.children[0];
            //用于取得最后一次支付的月份
            var last = "";
            if(my.memberFee.length>0){
                //如果有缴费记录
                clearAll(list);
                for(var i=0;i<my.memberFee.length;i++){
                    var newLine = line.cloneNode(true);
                    newLine.children[0].children[0].innerText=
                        my.memberFee[i].year+"年"+
                        my.memberFee[i].month+"月已付";
                    list.appendChild(newLine);
                }
                //计算最后一次缴费的月份
                var paied = my.memberFee[my.memberFee.length-1];
                last = parseInt(paied.year)*12+parseInt(paied.month);
            }else{
                //如果没有缴费记录，则计算入会的月份
                var tmp = new Date(my.joinTime);
                last = tmp.getFullYear()*12+tmp.getMonth()+1;
            }
            var now = new Date();
            var nowMonth = now.getFullYear()*12+now.getMonth()+1;
            m = nowMonth-last;
            if (m>0 || my.memberFee.length==0) {
                //本月还没缴费，或从未交过费，显示缴费按钮
                display("pay",true);
                if(m==0) m=1;
                //至少交一个月的，为了更通用，应该先从区块链上获取一下每月缴费金额
                //目前是写死的
                setNodeText("notice","您需要缴费" +(m*2)+"(DAI)" );
                getNode("amount").value = m*2;
            } else {
                display("pay",false);
                setNodeText("notice","您现在无需缴费。");
            } 
            //点击支付后的业务逻辑
            getNode("pay").onclick=async function(){
                if (!checkConnect()) return;
                //转换成大整数
                var amount = parse(getNode("amount").value);
                if ((parseInt(getNode("amount").value)/2)>(m+3)){
                    alert("最多可以预交3个月的会费");
                    return;
                }
                //这是一个需要两次确认的操作
                setLoading(1,2);
                const dai = await DAIbalance();
                //注意大整数不能用><来判断
                if (dai.lt(amount)){
                    setLoading(0);
                    alert("DAI的余额不足");
                    return;
                }
                var rtn = await DAIapprove("允许系统转账"+getNode("amount").value+"个DAI",amount);
                if (rtn){
                    setLoading(2,2);
                    rtn = await payMemberFee("执行转账交易",amount);
                    if (rtn){
                        my.memberFee = rtn;
                        init();
                    }
                }
                setLoading(0);
            };
        }
    }
    init();
})();